The invention relates to a system, and method for the dynamic allocation of software resources. More particularly, the invention employs a system, method and computer program to determine the software modules required to fulfil requests for fixed band radio functions and dynamically allocate those software modules upon demand.
Over the relatively short history of the computer industry dramatic changes have occurred. The most significant of these changes has been the incredible drop in hardware prices along with the equally incredible improvement in performance. However, the cost of developing, maintaining and troubleshooting software has not seen improvement nearly as dramatic as seen in hardware. Today, the cost of developing, maintaining and troubleshooting software can dwarf the cost of the hardware involved, particularly in the case of complex military, government and business systems.
The high cost of developing, maintaining and troubleshooting software can be attributed to many factors. A few of these factors include: the every increasing complexity of the software due to an ever increasing demand in functionality, a frequent shortage of trained and experienced programmers; and the need for more rigorous testing of this more complex software.
Throughout the history of the computer industry many attempts have been made to reduce the cost of developing, testing and maintaining software. In the early 1960s, the COBOL programming language was developed to facilitate the coding, maintenance and porting of business applications. In the 1970s, structured programming languages such as Pascal and C were developed. In the 1980s, objected oriented languages such as C++ and Ada were developed and in the 1990s common object models (COM objects) were also created.
However, even with the advent of structured, modular and object oriented programming techniques, a programmer is frequently required to create a single large monolithic program, or what is even worse is that a program has features added to so that over time it turns into a large complex piece of code. The requirement for large programs is necessitated by the requirement that a single program must perform all functions related to a given activity. Unfortunately, when executing such a large piece of software, only a small portion is executed to perform any single given function. The remaining code is there in case the program is called upon to perform any of its other functions. Therefore, most of the time a great deal of the code in a software program is simply excess baggage.
However, this excess baggage (code) cannot be simply thrown away. All the code is needed in order to perform all the functions related to a particular activity. Unfortunately, the presence of such code makes designing, generating and testing the code difficult. It further makes maintaining it even more difficult and thus expensive. A modification to one portion of a program can often have detrimental consequences to other unrelated portions of a program. Therefore, extensive testing is required of all features of a program when a new feature is added or modified. This is particularly true when the software is used in aerospace or military applications where an error can cost human lives.
Of particular concern to the military is the flexibility to utilize the components available to accomplish a particular function. For example, the Comanche helicopter can support a VHF-AM radio, two UHF radios, two VHF-FM radios, and one satellite communications interface. Each one of these communications devices would require several pieces of hardware and some form of controlling software. In combat it can be anticipated that some hardware and processors may be lost. However, a combat aircraft should not, and may not be able to, be taken out of action due to the loss of a portion of a radio system or subsystem. Therefore, the military has designed the required radio communications software in such a way as to be able to use the hardware available to continue operations. However, this has required large complex software programs to be developed and extensively tested to handle every possible configuration of hardware which is a time consuming and expensive process.
Therefore, what is needed is a system, method and computer program in which, upon receiving a request to perform a certain function, only those portions of code that are needed to perform a function will be brought together at that time and executed. These portions of code should be independent of each other and thus have the ability to be tested independently and therefore simply. However, these portions of code should, when brought together, be able to work together to perform the requested function. These code segments or modules must able to communicate to any other code segment or module and thereby can be configured to work together and adapt as the needs change.
An embodiment of the present invention provides for a method of configuring a thread to perform a specific function. This method begins by identifying at least one resource element required to perform the specific function. It then generates a message label having several parameters required by the resource element to perform the specific function. This message label is then transmitted to the resource element. Upon receipt of the message label, the resource element is activated to perform the specific function.
Further, an embodiment of the present invention creates a system to configure a thread to perform a specific function. This system uses a mission interface manager to receive a request to generate a thread that performs the specific function. The system also has a resource manager which communicates with the mission interface manager. This resource manager identifies the resource elements required to generate a thread. The resource manager also generates several message labels which are transmitted to the resource elements in order to form the thread.
Still further, an embodiment of the present invention is a computer program executable by a computer and embodied on a computer readable medium to configure a thread to perform a specific function. This computer program uses a mission interface manager code segment to receive a request to generate a thread that performs a specific function. The computer program also has a resource manager code segment that communicates with the mission interface manager code segment. The resource manager code segment identifies the resource elements required to generate the thread. The resource manager also generates several message labels that are transmitted to the resource elements in order to form the thread.